<?php
class CSwfUpload extends CWidget
{
	public $config=array();
	
    public function run()
    {
		//$assets = dirname(__FILE__).'/assets';
        //$baseUrl = Yii::app()->assetManager->publish($assets,false,-1,YII_DEBUG);
        $baseUrl=Yii::app()->request->baseUrl.'/static/plugins/swfupload/';
		Yii::app()->clientScript->registerScriptFile($baseUrl.'jsdebug.js', CClientScript::POS_HEAD);
		Yii::app()->clientScript->registerScriptFile($baseUrl.'swfupload.js', CClientScript::POS_HEAD);
		Yii::app()->clientScript->registerScriptFile($baseUrl.'handlers.js', CClientScript::POS_HEAD);
		Yii::app()->clientScript->registerCssFile($baseUrl.'default.css');
		$config = array(
		'upload_url'                       =>   Yii::app()->createUrl('/attachment/upload'),
		'flash_url'                        =>   $baseUrl. 'swfupload.swf',
		'flash9_url'                       =>   $baseUrl. 'swfupload_fp9.swf',
	    //提交到php的数组
		'file_post_name'                   =>   "filedata",
		//要提交的post变量
		'post_params'                      =>   array('PHPSESSID'=>session_id()),
		//设置为true的时候，SWFUpload以GET形式发送数据，如果为false，那么就以POST发送数据。
		'use_query_string'                 =>   false,
		//设置为true的时候，上传的文件发生错误会重新插入到队列中再次上传 false的时候就直接丢弃掉
		'requeue_on_error'                 =>   false,
		//上传的文件类型
		'file_types'                       =>   "*.jpg;*.gif;*.png",
		//设置文件选择对话框中显示给用户的文件描述。
		'file_types_description'           =>   "请选择以下类型",
		//动态修改设置中的file_size_limit，此修改针对之后的文件大小过滤有效。file_size_limit参数接收一个单位，有效的单位有B、KB、MB、GB，默认单位是KB。
		'file_size_limit'                  =>   '3MB',
		//最多可以上传多少 多次选择的总和
		'file_upload_limit'                =>   10,
		//一次可以选择多少个
		'file_queue_limit'                 =>   10,
		//上传的文件在那个id的容器中显示 如果不设置的话就不会显示出上传的过程
		'custom_settings'                  =>   '',
		//设置为调试状态
		'debug'                            =>   false,
		//提醒：SWFUpload是直接在flash_url后添加了一个swfuploadrnd的随机参数。如果你给定的flash_url中已经存在了GET类型的参数，那么就会出现两个问号连接符导致错误。
		//该布尔值设置是否在Flash URL后添加一个随机值，用来防止浏览器缓存了该SWF影片。这是为了解决一些基于IE-engine的浏览器上的出现一个BUG。
		'prevent_swf_caching'              =>   false,
		//要绑定的上传按钮
		'button_placeholder_id'            =>   "uploadId",
		//上传按钮的背景图片
		'button_image_url'                 =>   $baseUrl."/button.png",
		//按钮的宽度
		'button_width'                     =>   61,
		//按钮的高度
		'button_height'                    =>   22,
		//按钮中的内容
		'button_text'                      =>   "",
		//css样式
		'button_text_style'                =>   "",
		//设置Flash Button上文字距离左侧的距离，可以使用负值。
		'button_text_left_padding'         =>   3,
		//设置Flash Button上文字距离顶部的距离，可以使用负值。
		'button_text_top_padding'          =>   2,
		//SWFUpload.BUTTON_ACTION.SELECT_FILES 多选 SWFUpload.BUTTON_ACTION.SELECT_FILE单选
		'button_action'                    =>   'js:SWFUpload.BUTTON_ACTION.SELECT_FILES',
		//为true的时候禁用按钮
		'button_disabled'                  =>   false,
		//默认为SWFUpload.CURSOR.ARROW SWFUpload.CURSOR.HAND（手型）
		'button_cursor'                    =>   'js:SWFUpload.CURSOR.HAND',
		//此参数可以设置浏览器具体以哪种模式显示该SWF影片。
		'button_window_mode'               =>   'js:SWFUpload.WINDOW_MODE.TRANSPARENT',
		
		
		//事件处理
		//选择完成时调用
		'file_queued_handler'              =>   'js:fileQueued',
		//选择错误的时候调用 每个文件调用一次
		'file_queue_error_handler'         =>   'js:fileQueueError',
		//当选择文件对话框关闭，并且所有选择文件已经处理完成（加入上传队列成功或者失败）时，此事件被触发
		//number of files selected是选择的文件数目，number of files queued是此次选择的文件中成功加入队列的文件数目。
		//当文件选取对话框关闭后触发的事件处理函数
		'file_dialog_complete_handler'     =>   'js:fileDialogComplete',
		//开始上传文件前触发的事件处理函数
		'upload_start_handler'             =>   'js:uploadStart',
		//正在上传时调用 提供三个参数分别访问上传文件对象、已上传的字节数，总共的字节数
		'upload_progress_handler'          =>   'js:uploadProgress',
		//上传错误的时候调用
		'upload_error_handler'             =>   'js:uploadError',
		//上传成功的时候 //fileObj是文件对象，server_data是服务器返回的值
		'upload_success_handler'           =>   'js:uploadSuccess',
		//上传完成的时候调用 上传完了一个文件 注意是一个文件
		'upload_complete_handler'          =>   'js:uploadComplete'
		);
		foreach ($config as $k=>$v){
			if(isset($this->config[$k]) && !empty($this->config[$k]))
			$config[$k]=$this->config[$k];
		}
		if(!isset($config['custom_settings']['divClass'])){
			$config['custom_settings']['divClass']='SWF_Upload_Main';
		}
		$config['custom_settings']['deleteFilePath']=Yii::app()->createUrl('/attachment/delete');
		$config['post_params']['PHPSESSID']=session_id();
		//$config = array_merge($config, $this->config);
		$config = CJavaScript::encode($config);
		$rand=rand(1, 9999);
		Yii::app()->getClientScript()->registerScript(__CLASS__.$rand, "
		var swfu".$rand.";
			swfu".$rand." = new SWFUpload($config);
		");
    } 
       
}